package co.edu.eam.supergiros.persistencia.entidades;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.NamedNativeQueries;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

/**
 * Entidad que representa un cambio de moneda efectuado por un usuario.
 * 
 * @author Camilo Andres
 * 
 */
@Entity
@Table(name = "cambio")
@NamedQueries({
    @NamedQuery(name = Cambio.CONSULTA_LISTAR_CAMBIO_CLIENTE, query = "SELECT cam FROM Cambio cam WHERE cam.cliente=:"
    + Cambio.PARAMETRO_CLIENTE)
})
public class Cambio implements Serializable {

    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	/**
     * constante listar cambio por cliente
     */
    public static final String CONSULTA_LISTAR_CAMBIO_CLIENTE = "Cambio.Listar_cliente";
    /**
     * constante que se utiliza para hacer la lista de cambios por cliente
     */
    public static final String PARAMETRO_CLIENTE = "Cambio.cliente";
    /**
     * Llave primaria del cambio.
     */
    @Column(name = "id")
    @Id
    private long id;
    /**
     * Moneda de la que se hace el cambio.
     */
    @ManyToOne
    @JoinColumn(name = "monedaOrigen")
    private ValorMoneda monedaOrigen;
    /**
     * Moneda a la que se hace el cambio.
     */
    @ManyToOne
    @JoinColumn(name = "monedaDestino")
    private ValorMoneda monedaDestino;
    /**
     * Usuario que hace el cambio.
     */
    @ManyToOne
    @JoinColumn(name = "usuario")
    private Usuario usuario;

    public Cambio() {
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public ValorMoneda getMonedaDestino() {
        return monedaDestino;
    }

    public void setMonedaDestino(ValorMoneda monedaDestino) {
        this.monedaDestino = monedaDestino;
    }

    public ValorMoneda getMonedaOrigen() {
        return monedaOrigen;
    }

    public void setMonedaOrigen(ValorMoneda monedaOrigen) {
        this.monedaOrigen = monedaOrigen;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
}
